Personnaliser Securimage
Cette page explique comment changer le look de Securimage en modifiant sa configuration.
Il y a deux endroits à partir desquels on peut changer le look de Securimage, soit dans la fonction __construct()
dans securimage.php, ou directement dans le fichier securimage_show.php (recommandé). Les exemples ci-dessous vont vous montrer comment modifier les paramètres du fichier securimage_show.php
La définition des couleurs avec Securimage est flexible et facile, toutes les couleurs sont définies en utilisant la classe Securimage_Color. Les couleurs peuvent être données en valeurs RGB, avec des valeurs hexadécimales ou en HTML. Les exemples ci-dessous montrent chaque méthode.
3 |
$color = new Securimage_Color(0, 0, 255); |
6 |
$color = new Securimage_Color(0, 0, 0xff); |
10 |
$color = new Securimage_Color('#3388FF'); |
13 |
$color = new Securimage_Color('#38F'); |
L'exemple suivant montre quelles sont les propriétés à utiliser pour changer de fond, texte et couleur de lignes.
4 |
$img->image_bg_color = new Securimage_Color('#ffffff'); |
7 |
$img->text_color = new Securimage_Color('#525252'); |
10 |
$img->line_color = new Securimage_Color('#525252'); |
Securimage permet d'utiliser facilement un fond statique unique sur tous vos captchas ou de choisir un fond aléatoire à partir d'un répertoire à utiliser dans chaque image. Notez que le fond sera plus visible et fonctionnera mieux quand il a la même taille que votre image (230×80 par défaut), cependant il sera redimensionné pour s'adapter à l'image même s'ils n'ont pas la même taille.
Pour utiliser un fond simple sur chacune des images, éditez la dernière ligne du fichier securimage_show.php et écrivez le chemin complet de l'image de fond dans la fonction show().
4 |
$img->show( '/home/user/public/securimage/backgrounds/image.png' ); |
7 |
$img->show( 'C:\\inetpub\\wwwroot\\securimage\\backgrounds\\image.png' ); |
Au lieu de montrer la même image, Securimage fournit un répertoire avec des arrière-plans dans le dossier Securimage où on peut mettre des fichiers image png, jpg, ou gif ; l'un d'entre eux sera choisi aléatoirement à chaque affichage d'une image CAPTCHA.
5 |
$img->background_directory = dirname(__FILE__) . '/backgrounds/'; |
Securimage est fourni avec quelques arrière-plans, mais vous pouvez ajouter les vôtres ; autant que vous le souhaitez et ils seront utilisés.
Les deux facteurs importants pour rendre difficile les résolutions automatiques des captchas par des programmes informatiques sont les distorsions du code et le dessin des lignes aléatoires sur l'image. Si les caractères sont suffisamment déformés, les programmes n'auront pas beaucoup de succès en tentant de retrouver la valeur correcte. Dessiner des lignes aléatoires sur toute l'image permet de tromper les programmes ; en suivant les lignes aléatoires ils peuvent se tromper en pensant qu'elles font parties d'une lettre ou d'un chiffre et de ce fait ils n'arriveront pas à trouver la valeur juste.
D'autre part, le propriétaire du site peut ne pas souhaiter faire une image trop difficile à lire pour ses visiteurs et de ce fait diminuer la difficulté des paramètres ou même les enlever.
Le niveau de distorsion est contrôlé par la propriété perturbation et le nombre de lignes se trouvant sur l'image (s'il y en a) par la propriété num_lines.
4 |
$img->perturbation = 0.75; |
7 |
$img->perturbation = 1; |
10 |
$img->perturbation = 0; |
Vous pouvez utiliser une police d'écriture différente de celle qui est livrée avec Securimage pour obtenir un look unique pour vos images. Des polices plus complexes peuvent être utilisées pour rendre la résolution automatique du captcha plus difficile. Securimage peut charger n'importe laquelle tant que c'est une police TTF.
Pour utiliser votre propre police, envoyez le fichier TTF dans le dossier Securimage (où la police par défaut AHGBold.ttf est située). Pour éviter des problèmes lors du chargement de la police, assurez-vous que son nom n'a pas d'espaces ou autres caractères spéciaux et que le fichier se termine par l'extension .ttf. Le chargement des polices est contrôlé par la propriété ttf_file.
4 |
$img->ttf_file = $img->basepath . '/fontfile.ttf'; |
Si la police d'écriture est envoyée dans le dossier Securimage, utilisez la propriété basepath pour indiquer le chemin du fichier. Le chemin de base est automatiquement enregistré et pointe sur le dossier Securimage. Si vous avez placé la police ailleurs, vous devez utiliser le chemin absolu vers le fichier de police sinon il ne se chargera pas correctement.
Une signature est un petit morceau de texte qui apparaît dans le coin inférieur droit de chaque image captcha générée. Une signature peut être un nom de domaine, une phrase courte ou un autre texte que l'on souhaite afficher sur l'image.
L'exemple suivant montre comment afficher une signature et changer sa couleur.
4 |
$img->image_signature = 'tondomaine.com'; |
5 |
$img->signature_color = new Securimage_Color('#000000'); |
Pour changer la taille d'une image captcha, les propriétés image_width et image_height sont utilisées. Pour éviter que le texte sorte de l'image, la largeur doit être 2,7 fois supérieure à la hauteur. Le meilleur moyen de calculer la taille est de choisir une hauteur et de la multiplier par 2,875 ou de choisir une largeur et de la multiplier par 0,35.
4 |
$img->image_width = 260; |
5 |
$img->image_height = (int)($img->image_width * 0.35); |
8 |
$img->image_height = 50; |
9 |
$img->image_width = (int)($img->image_height * 2.875); |
Les règles de multiplication utilisées ci-dessus ne sont que des lignes directrices, vous pouvez expérimenter avec différentes hauteurs et largeurs pour voir ce qui fonctionne le mieux avec la mise en perturbation choisie et la police utilisée.
Le caractère par défaut utilisé par Securimage est un sous-ensemble de la gamme [a-z, A-Z, 0-9], avec les caractères ambigüs exclus de l'ensemble.
Cela permet de réduire la frustration des utilisateurs car certains caractères ressemblent beaucoup à d'autres, en particulier avec certaines polices et des niveaux plus élevés de distorsion. Les caractères exclus sont I, J, O, Q, i, j, o, q, 0 (zéro) et 1 (un).
Le jeu de caractères peut être spécifié en utilisant une chaîne de caractères à inclure grâce à la propriété charset. Spécifier le même caractère plus d'une fois signifie seulement qu'il a une plus grande probabilité d'être sélectionné et peut apparaïtre plus fréquemment que les autres caractères.
4 |
$img->charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; |
7 |
$img->charset = '0123456789'; |
10 |
$img->charset = 'abcdefghklmnprstuvwyz23456789'; |
Pour rendre plus difficile la résolution des captchas de votre site par les programmes, certaines valeurs peuvent être randomisées pour les dissuader de faire des hypothèses sur votre image. Cette exemple montre comment utiliser la fonction php rand() pour rendre aléatoires les propriétés d'une image.
4 |
$img->code_length = rand(4, 6); |
7 |
$img->num_lines = rand(3, 10); |
Traduit et mis en page par aventurier19